package com.library.utils;

import com.baomidou.mybatisplus.enums.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @author weiwu
 * @description MybatisPlus逆向工程生成的工具类
 * @date 2018/9/30 15:12
 */
public class MybatisPlusGenerator {

    public static void main( String[] args ) {

        // 1、全局配置
        GlobalConfig config = new GlobalConfig();
        // 是否开启AR模式
        config.setActiveRecord(true)
            // 设置作者
            .setAuthor("至尊伍人组")
            // 设置生成路径(绝对路径)
            .setOutputDir("F:/Document/Code/IDEA/java/librarySystem/src/main/java")
            // 开启文件覆盖
            .setFileOverride(true)
            // 主键策略
            .setIdType(IdType.AUTO);

        // 2、数据源配置
        DataSourceConfig dsConfig = new DataSourceConfig();
        //设置数据库的类型
        dsConfig.setDbType(DbType.MYSQL)
            //设置数据库连接路径
            .setUrl("jdbc:mysql://39.108.220.221:3306/libary?useSSL=false&useUnicode=true&characterEncoding=UTF-8")
            //设置数据库连接驱动
            .setDriverName("com.mysql.jdbc.Driver")
            //设置数据库用户名
            .setUsername("root")
            //设置数据库用户名的密码
            .setPassword("Aa066323");

        //需要逆向生成的数据库的表
        String[] tabs = {"admin", "authorization", "backInfo", "book", "booktype", "borrowInfo",
            "forfeitInfo", "lesson", "questions", "reader", "readerType", "results"};

        // 3、策略配置
        StrategyConfig stConfig = new StrategyConfig();
        // 全局大写命名
        stConfig.setCapitalMode(true)
            // 表名 字段名 是否使用下划线命名
            // .setDbColumnUnderline(true)
            // 数据库表映射到实体的命名策略
            .setNaming(NamingStrategy.underline_to_camel)
            // 需要生成的表
            .setInclude(tabs);
        // 表的前缀
        // .setTablePrefix("tbl_");

        // 4、包名配置
        PackageConfig packageConfig = new PackageConfig();
        packageConfig.setParent("com.library")
            .setController("controller")
            .setEntity("entity").setMapper("mapper")
            .setService("service")
            .setServiceImpl("service.serviceImpl");

        new AutoGenerator().setGlobalConfig(config).setDataSource(dsConfig).setStrategy(stConfig)
            .setPackageInfo(packageConfig).execute();

    }

}
